MySQL MVCC
概要
現状のRDBMSではMVCCと言う技術が採用されてることがほとんど。 だが、このMVCCとはなんなのか?MySQL(InnoDB)ではどう言う立ち位置なのかを調べる。
MVCC(MultiVersion Concurrency Control)とは何か
MySQL特有の機能というわけではなく、DBMSに一般的なものです。
トランザクションをロックではなく、スナップショットを使って表現する方法。
REPEATABLE READでは、リピータブルリードを許してないが、これをどう許さないかと言うと...
トランザクションの最初のクエリ時にスナップショットを取っておく。
そうすると、そのトランザクション内での同じような範囲を指すクエリは、実データではなくスナップショットを参照するようになる。
そうすることで、他トランザクションが実データを変更したとしても、リピータブルリードが起きなくなる。
参考